package com.daniel.io.file;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

/**
 * 详细说明
 *
 * @author Daniel
 * @version V1.0
 * @date 2020/6/16 16:52
 */
public class TestFileOutputStream {
    public static void main(String[] args) {
        long startTime = System.currentTimeMillis();
        FileInputStream fis = null;
        FileOutputStream fos = null;
        try {
            // 1、创建一个文件输入流
            fis = new FileInputStream("E:\\开发软件\\IntelliJIDEA\\ideaIU-2020.1.1.win.zip");
            fos = new FileOutputStream("D:\\2.zip");
            // 2、创建一个字节数组用来存储读取的信息
            byte[] buffer = new byte[1024];
            // 3、读取文件的长度
            int len = 0;
            // 4、循环读取数据
            while ((len = fis.read(buffer)) >= 0) {
                // 5、通过控制台输出数据，必须说明输出的长度
                // 控制台可能会乱码，解决中文乱码
                // String value = new String(buffer, 0, len, "GBK");
                // System.out.print(value);

                fos.write(buffer, 0, len);

                // 一般处理使用write
                // System.out.write(buffer, 0, len);
            }
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if (fis != null) {
                try {
                    // 6、读取完成后必须关闭流释放资源
                    fis.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            if (fos != null) {
                try {
                    fos.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
        long endTime = System.currentTimeMillis();
        System.out.println(endTime - startTime);
    }
}
